Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.10.2016, 15:12
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 789

Не справиться с serialize()
День добрый.Передаю форму по аяксу и данные передаются в таком виде
"fields%5B1%5D%5Bparent_id%5D=0&fields%5B1%5D%5BNS Left%5D=1&fields%5B1..."
Как их привести к нормальному виду или как такой вид обработать?
Ответить с цитированием
  #2 (permalink)  
Старый 29.10.2016, 15:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Серверный язык какой?
Ответить с цитированием
  #3 (permalink)  
Старый 29.10.2016, 16:09
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 789

PHP
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2016, 16:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

И в чем проблема? Это следствие url-кодирования, иначе нельзя безопасно передать все. РНР сам декодирует и отдает уже готовый массив POST/GET.
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2016, 17:04
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 789

По моему он не декодирует.Отсылаются в таком виде, возвращает в таком же.И почему только с serialize() такая история.Вместе с формой отправляю ещё данные, те уходят в json и возвращает как массив, если не парсить json.И на сервере обрабатываются нормально. А эти не могу вернуть.
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2016, 17:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ureech,
1. У Вас какая кодировка на сайте ? Если windows-1251, то нун корректировать обработку Аякса сервером... Сталкивался пару раз, есть статья на Хабре
если UTF - то типично проблем не бывает
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2016, 17:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от ureech
По моему он не декодирует.
По вашему или все таки проверялось? Сохраните это под любым именем и запустите на локальном сервере:

<?
if($_POST) exit(print_r($_POST, 1))
?>
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script> 
$(function() {
    $("form").submit(function(e){
        e.preventDefault();
        var d = $(this).serialize();
        alert(d)
        $.ajax({
            type: 'POST',
            url: location,
            data: d, 
            success: function(d) {
                alert(d)
            }
        });
    });
});
</script>     
</head> 

<body>
<form>
    <input name="as[]" value="text 1">
    <input name="as[]" value="text 2">
    <button type="submit">GO</button>
</form>
</body> 
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 29.10.2016, 23:36
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 789

Блин,не понимаю.Мой код не хочет возвращать массив.Возможно дело в коде самой формы.Попробую поменять.
Ответить с цитированием
  #9 (permalink)  
Старый 30.10.2016, 01:24
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 789

Нашёл причину.Или следствие, не знаю. Не принимает такой синтаксис
data:{a:a,b:b}, только так data:'a='+a&...
Ответить с цитированием
  #10 (permalink)  
Старый 30.10.2016, 09:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от ureech
Не принимает такой синтаксис
data:{a:a,b:b}
А такого и быть не может. Вместо serialize() отправьте данные формы методом serializeArray(), который возвращает валидный объект, и данные без проблем будут отправлены.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
blob, serialize и get cross-domain ajax запрос ravend Общие вопросы Javascript 8 13.01.2016 12:01
Sencha Cmd: Как с этой штукой справиться? khusamov ExtJS 3 21.11.2015 11:57
проблема с IE8 как справиться? oryth Элементы интерфейса 6 10.08.2014 22:56
Помогите справиться со слайдером kernel Общие вопросы Javascript 1 25.12.2013 09:26
Установить переменную (не могу справиться с параллельностью) Sufir Общие вопросы Javascript 2 15.12.2011 17:19